
package com.udc.medLine.transaction;

import java.util.List;

import com.udc.medLine.entity.Categoria;
import com.udc.medLine.entity.Cliente;
import com.udc.medLine.entity.CondicaoVO;
import com.udc.medLine.entity.Conveniencia;
import com.udc.medLine.entity.Medicamento;
import com.udc.medLine.entity.Modelo;
import com.udc.medLine.factory.FactoryCategoria;
import com.udc.medLine.factory.FactoryCliente;
import com.udc.medLine.factory.FactoryConveniencia;
import com.udc.medLine.factory.FactoryMedicamento;
import com.udc.medLine.factory.FactoryModelo;
import com.udc.medLine.persistence.Bd;

public class TransactionConveniencia {

	private Conveniencia conveniencia;
	private List listConveniencia;
	private List modelos;

	private List categorias;
	private Bd banco;
	
	/**
	 * 
	 */
	public TransactionConveniencia() {
		super();
		conveniencia = new Conveniencia();
		try{
			banco = Bd.getInstance();
		}
		catch(Exception e){
			e.printStackTrace();
		}
		// TODO Stub de construtor gerado automaticamente
	}

	public Conveniencia getConveniencia() {
		return conveniencia;
	}

	public void setConveniencia(Conveniencia new_conveniencia) {
		this.conveniencia = new_conveniencia;
	}

	public void remover(Conveniencia nConveniencia) throws Exception {
		banco.beginTransaction();
			FactoryConveniencia factory = new FactoryConveniencia();
			conveniencia.setId(nConveniencia.getId());
			factory.setConveniencia(conveniencia);
			factory.setConveniencia(factory.obterConveniencia());
    		factory.delete();
		banco.commit();
	}

	public void inserir(Conveniencia nConveniencia) throws Exception {
		banco.beginTransaction();
			FactoryConveniencia factory = new FactoryConveniencia();
			
			conveniencia.setNome(nConveniencia.getNome());
			conveniencia.setDataVencimento(nConveniencia.getDataVencimento());
			conveniencia.setPrecoCusto(nConveniencia.getPrecoCusto());
			conveniencia.setPrecoVenda(nConveniencia.getPrecoVenda());
			conveniencia.setQuantidade(nConveniencia.getQuantidade());
			conveniencia.setQuantidadeMinima(nConveniencia.getQuantidadeMinima());
			conveniencia.setCategoria(nConveniencia.getCategoria());
			conveniencia.setModelo(nConveniencia.getModelo());
			factory.setConveniencia(conveniencia);
			factory.insert();
		banco.commit();
	}

	public void atualizar(Conveniencia nConveniencia) throws Exception {
		banco.beginTransaction();
		FactoryConveniencia factory = new FactoryConveniencia();
		
		conveniencia.setId(nConveniencia.getId());
		conveniencia.setNome(nConveniencia.getNome());
		conveniencia.setDataVencimento(nConveniencia.getDataVencimento());
		conveniencia.setPrecoCusto(nConveniencia.getPrecoCusto());
		conveniencia.setPrecoVenda(nConveniencia.getPrecoVenda());
		conveniencia.setQuantidade(nConveniencia.getQuantidade());
		conveniencia.setQuantidadeMinima(nConveniencia.getQuantidadeMinima());
		conveniencia.setCategoria(nConveniencia.getCategoria());
		conveniencia.setModelo(nConveniencia.getModelo());
		
		factory.setConveniencia(conveniencia);
			factory.update();
		banco.commit();
	}


	public void obterConveniencia(String campo, String valor) throws Exception{
		banco.beginTransaction();
			FactoryConveniencia factory = new FactoryConveniencia();
			factory.setConveniencia(new Conveniencia());
			listConveniencia = factory.getConveniencia(campo,valor);
		banco.commit();
	}
	
	public void obterListaConveniencia() throws Exception{
		banco.beginTransaction();
			FactoryConveniencia factory = new FactoryConveniencia();
			factory.setConveniencia(new Conveniencia());
			listConveniencia = factory.getListaConveniencia();
		banco.commit();
	}
	
	public void obterConveniencia(Conveniencia nConveniencia) throws Exception{
		banco.beginTransaction();
			FactoryConveniencia factory = new FactoryConveniencia();
			conveniencia.setId(nConveniencia.getId());
			factory.setConveniencia(conveniencia);
			conveniencia = factory.obterConveniencia();
		banco.commit();
	}
	
	public void obterListaCategoria() throws Exception{
		banco.beginTransaction();
			FactoryCategoria factory = new FactoryCategoria();
			categorias = factory.getListaCategoria();
		banco.commit();
	}
	
	public void obterListaModelo() throws Exception{
		banco.beginTransaction();
			FactoryModelo factory = new FactoryModelo();
			modelos = factory.getListaModelos();
		banco.commit();
	}
	
	public List search(List condicoes) throws Exception{
		banco.beginTransaction();
			FactoryConveniencia factory = new FactoryConveniencia();
			factory.setConveniencia(new Conveniencia());
			listConveniencia = factory.search(condicoes);			 
		banco.commit();
		return listConveniencia;		
	}
	
	/**
	 * @return
	 */
	public List getListConveniencia() {
		return listConveniencia;
	}

	/**
	 * @param list
	 */
	public void setListConveniencia(List list) {
		listConveniencia = list;
	}
	
	/**
	 * @return the modelos
	 */
	public List getModelos() {
		return modelos;
	}

	/**
	 * @param modelos the modelos to set
	 */
	public void setModelos(List modelos) {
		this.modelos = modelos;
	}

	/**
	 * @return the categorias
	 */
	public List getCategorias() {
		return categorias;
	}

	/**
	 * @param categorias the categorias to set
	 */
	public void setCategorias(List categorias) {
		this.categorias = categorias;
	}

	public List<Conveniencia> search(CondicaoVO condicao) throws Exception {
		banco.beginTransaction();
		FactoryConveniencia factory = new FactoryConveniencia();
		listConveniencia = factory.search(condicao);
		banco.commit();
		return listConveniencia;
	}
	
	public List<Cliente> searchCriterio(CondicaoVO condicao) throws Exception {
		banco.beginTransaction();
		
		banco.commit();
		return listConveniencia;
	}

}
